package api

type GetCardHolderRes struct {
	CardUserId         string               `json:"cardUserId"`
	FirstName          string               `json:"firstName"`
	MiddleName         string               `json:"middleName"`
	LastName           string               `json:"lastName"`
	Email              string               `json:"email"`
	MobilePrefix       string               `json:"mobilePrefix"`
	Mobile             string               `json:"mobile"`
	BirthDate          string               `json:"birthDate"`
	CountryCode        string               `json:"countryCode"`
	BillingState       string               `json:"billingState"`
	BillingCity        string               `json:"billingCity"`
	BillingAddress     string               `json:"billingAddress"`
	BillingZipCode     string               `json:"billingZipCode"`
	CreateAt           string               `json:"createAt"`
	Status             int                  `json:"status"`
	Remark             string               `json:"remark"`
	HolderCardBinsInfo []HolderCardBinsInfo `json:"holderCardBins"`
}

type HolderCardBinsInfo struct {
	CardBin          string `json:"cardBin"`
	HolderStatus     int    `json:"holderStatus"`
	HolderStatusDesc string `json:"HolderStatusDesc"`
}

type GetCardHolderReq struct {
	CardUserId string `json:"cardUserId"`
}

type CardTransactionReq struct {
	Type string      `json:"type"`
	Data interface{} `json:"data"`
}

type CardTransactionInfo struct {
	RecordNo             string  `json:"recordNo"`
	CardId               string  `json:"cardId"`
	OccurTime            string  `json:"occurTime"`
	TransCurrency        string  `json:"transCurrency"`
	TransCurrencyAmt     float64 `json:"transCurrencyAmt"`
	LocalCurrency        string  `json:"localCurrency"`
	LocalCurrencyAmt     float64 `json:"LocalCurrencyAmt"`
	RespCode             string  `json:"respCode"`
	RespCodeDesc         string  `json:"respCodeDesc"`
	ApprovalCode         string  `json:"approvalCode"`
	MerchantName         string  `json:"merchantName"`
	MerchantCategoryCode string  `json:"merchantCategoryCode"`
	CrossBoardType       string  `json:"crossBoardType"`
	TransType            string  `json:"transType"`
	TransStatus          string  `json:"transStatus"`
}

type CardTransactionInfoVo struct {
	RecordNo             string  `json:"recordNo"`
	CardId               string  `json:"cardId"`
	OccurTime            string  `json:"occurTime"`
	TransCurrency        string  `json:"transCurrency"`
	TransCurrencyAmt     float64 `json:"transCurrencyAmt"`
	LocalCurrency        string  `json:"localCurrency"`
	LocalCurrencyAmt     float64 `json:"LocalCurrencyAmt"`
	RespCode             string  `json:"respCode"`
	RespCodeDesc         string  `json:"respCodeDesc"`
	ApprovalCode         string  `json:"approvalCode"`
	MerchantName         string  `json:"merchantName"`
	MerchantCategoryCode string  `json:"merchantCategoryCode"`
	CrossBoardType       string  `json:"crossBoardType"`
	TransType            string  `json:"transType"`
	TransStatus          string  `json:"transStatus"`
}

type CardOrderInfo struct {
	OrderId    string  `json:"orderId"`
	CardId     string  `json:"cardId"`
	GroupId    string  `json:"groupId"`
	UserReqNo  string  `json:"userReqNo"`
	OpType     int64   `json:"opType"`
	Status     int64   `json:"status"`
	StatusDesc string  `json:"statusDesc"`
	Amount     float64 `json:"amount"`
	Fee        float64 `json:"fee"`
}

type CardOrderInfoVo struct {
	OrderId    string  `json:"orderId"`
	CardId     string  `json:"cardId"`
	OpType     int64   `json:"opType"`
	Status     int64   `json:"status"`
	StatusDesc string  `json:"statusDesc"`
	Amount     float64 `json:"amount"`
	Fee        float64 `json:"fee"`
}

type CardOTPInfo struct {
	Otp                 string `json:"otp"`
	CardId              string `json:"cardId"`
	CardNo              string `json:"cardNo"`
	TransactionCurrency string `json:"transactionCurrency"`
	TransactionAmount   string `json:"transactionAmount"`
	MerchantName        string `json:"merchantName"`
}

type CardTradeFeeInfo struct {
	CardId    string  `json:"cardId"`
	CreateAt  string  `json:"createAt"`
	OpType    int     `json:"opType"`
	RealCcy   string  `json:"realCcy"`
	RealFee   float64 `json:"realFee"`
	ReceiptNo string  `json:"receiptNo"`
	RecordNo  string  `json:"recordNo"`
	UserNo    string  `json:"userNo"`
}

type CardTradeFeeVo struct {
	CardId    string  `json:"cardId"`
	CreateAt  string  `json:"createAt"`
	OpType    int     `json:"opType"`
	RealCcy   string  `json:"realCcy"`
	RealFee   float64 `json:"realFee"`
	ReceiptNo string  `json:"receiptNo"`
	RecordNo  string  `json:"recordNo"`
	UserNo    string  `json:"userNo"`
}

type CardOTPInfoVo struct {
	Otp                 string `json:"otp"`
	CardId              string `json:"cardId"`
	CardNo              string `json:"cardNo"`
	TransactionCurrency string `json:"transactionCurrency"`
	TransactionAmount   string `json:"transactionAmount"`
}

type SendCallBackReq struct {
	Type string `json:"type"`
	Data string `json:"data"`
}

type CardSettlementInfoReq struct {
	CardId          string `json:"cardId"`
	TradeType       string `json:"tradeType"`
	CreateDateStart string `json:"createDateStart"`
	CreateDateEnd   string `json:"createDateEnd"`
	CardType        string `json:"cardType"`
	CurrentPage     int    `json:"currentPage"`
	PageSize        int    `json:"pageSize"`
}

type SettlementInfoRes struct {
	SettlementInfoRespDto SettlementInfoRespDto `json:"settlementInfoRespDto"`
}

type SettlementInfoRespDto struct {
	TotalCount      int               `json:"totalCount"`
	CurrentPage     int               `json:"currentPage"`
	PageSize        int               `json:"pageSize"`
	SettlementInfos []SettlementInfos `json:"settlementInfos"`
}

type SettlementInfos struct {
	RecordNo         string  `json:"recordNo"`
	CardId           string  `json:"cardId"`
	SettleDate       string  `json:"settleDate"`
	TransCurrency    string  `json:"transCurrency"`
	TransCurrencyAmt float64 `json:"transCurrencyAmt"`
	BillCurrency     string  `json:"billCurrency"`
	BillCurrencyAmt  float64 `json:"billCurrencyAmt"`
	ApprovalCode     string  `json:"approvalCode"`
	IsCredit         string  `json:"isCredit"`
	MerchantName     string  `json:"merchantName"`
	OriginRecordNo   string  `json:"originRecordNo"`
}

type CardRefundRes struct {
	OrderId string `json:"orderId"`
}

type CardRefundReq struct {
	CardId       string `json:"cardId"`
	UserReqNo    string `json:"userReqNo"`
	RefundAmount string `json:"refundAmount"`
	ChannelType  string `json:"channelType"`
}

type CardInfoRes struct {
	UserNo              string          `json:"userNo"`
	CardNo              string          `json:"cardNo"`
	CardVerifyNo        string          `json:"cardVerifyNo"`
	CardAlias           string          `json:"cardAlias"`
	CardLabel           string          `json:"cardLabel"`
	CardExpiryDate      string          `json:"cardExpiryDate"`
	LocalCurrency       string          `json:"localCurrency"`
	StartActiveDate     string          `json:"startActiveDate"`
	EndCloseDate        string          `json:"endCloseDate"`
	CreditLimitAmt      string          `json:"creditLimitAmt"`
	MinAuthAmt          string          `json:"minAuthAmt"`
	MaxAuthAmt          string          `json:"maxAuthAmt"`
	BalanceAmt          string          `json:"balanceAmt"`
	UsedAuthAmt         string          `json:"usedAuthAmt"`
	EnableMultiUse      string          `json:"enableMultiUse"`
	EnableCurrencyCheck string          `json:"enableCurrencyCheck"`
	CardClosedAmt       string          `json:"cardClosedAmt"`
	CardStatus          string          `json:"cardStatus"`
	CardStatusDesc      string          `json:"cardStatusDesc"`
	CreateTime          string          `json:"createTime"`
	CardUserInfo        CardUserInfo    `json:"cardUserInfo"`
	BillAddressInfo     BillAddressInfo `json:"billAddressInfo"`
}

type CardUserInfo struct {
	FirstName string `json:"firstName"`
	LastName  string `json:"lastName"`
	Email     string `json:"email"`
	Mobile    string `json:"mobile"`
	BirthDate string `json:"birthDate"`
}

type BillAddressInfo struct {
	Country        string `json:"country"`
	CountryCode    string `json:"countryCode"`
	BillingState   string `json:"billingState"`
	BillingCity    string `json:"billingCity"`
	BillingAddress string `json:"billingAddress"`
	BillingZipCode string `json:"billingZipCode"`
}

type GetCardInfoReq struct {
	CardId string `json:"cardId"`
}
